package BufferedInputStream.project;

import java.io.*;

/*

     BufferedInoutStream:字节缓冲输出流
            extends InoutStream抽象类
     作用：为FileInoutStream创建一个缓冲区（数组），提高写入效率

     步骤：1.创建 FileInputStream对象，构造方法中指定要绑定的输出的目的地
          2.创建  BufferedInputStream对象，构造方法中传递 FileOutoutStream对象（用来给它创建缓冲区，提高xiaolv）
          3.使用BufferedInputStream对象中的read（）方法，把数据写入到内部缓冲区中
          4.释放资源（本身会调用flush（）方法，第四步可以不写）
 */
public class PracticeMain {
    public static void main(String[] args) throws IOException {
        // 1.创建 FileInputStream对象，构造方法中指定要绑定的输出的目的地
        FileInputStream fis = new FileInputStream("E:\\idea\\IntelliJ IDEA 2020.3\\perject_idea\\20210325\\e.txt");
        //2.创建  BufferedInputStream对象，构造方法中传递 FileOutoutStream对象（用来给它创建缓冲区，提高xiaolv）
        BufferedInputStream bis = new BufferedInputStream(fis);
        //3.使用BufferedInputStream对象中的read（）方法，把数据写入到内部缓冲区中
        //方法1.一次读取一个放入缓冲区
//        int len = 0;
//        while ((len = bis.read()) != -1){
//            System.out.println(len);
//        }

        //方法2.创建一个数组缓冲区，一次读取一定数量的字节数，再将该数组放入到缓冲区
        byte[] bytes = new byte[1024];//用来存储每次读取的数据
        int len2 = 0;//记录每次读取的字节数
        while ((len2 = bis.read(bytes)) != -1){
            System.out.println(new String(bytes,0,len2));
        }
        //5.释放资源（本身会调用flush（）方法，第四步可以不写）
        bis.close();//关闭bis会自动也关闭fis
    }
}
